/*
 * block.h
 *
 *  Created on: 2-Nov-2011
 *      Author: willion
 */

#ifndef BLOCK_H_
#define BLOCK_H_

#include "baseOP.h"

#include <time.h>

class block: public baseOP
{
public:
	block(int l_dim, int m_dim, int n_dim, int looptime);
	virtual ~block();

	//void display_matrix(int token, int l_dim, int m_dim);

	//undertake the matrix-multi op and record the exec time
	void go(int multi_method);

	//transpose the matrix before multiplicating
	void go_adv();

	//multiply matrix left and right
	//result += left*right
	void multi_matrix(const int** left, const int** right, \
			int** result, \
			int l_dim, int m_dim, int n_dim, int multi_method);

	//print out the matrix
	void display_matrix(int** matrix, int l_dim, int m_dim);

};

#endif /* BLOCK_H_ */
